草庐IT

Javascript toFixed 不舍入

全部标签

java - Android:java 舍入错误。不明白为什么?

谁能解释为什么这些“相同”的表达式会返回不同的值?(newBigDecimal(String.valueOf(131.7d))).multiply(newBigDecimal(String.valueOf(0.95d))).doubleValue()=125.115(newBigDecimal(131.7d)).multiply(newBigDecimal(0.95d)).doubleValue()=125.11499999999998BigDecimal在它们之间有什么不同? 最佳答案 如果您阅读API文档,您会发现String.

C++舍入数字远离零

您好,我想在C++中像这样舍入双数(远离零):4.2---->55.7---->6-7.8---->-8-34.2---->-35执行此操作的有效方法是什么? 最佳答案 inlinedoublemyround(doublex){returnx如thearticleHuppiecites中所述,这最好表示为适用于所有浮点类型的模板参见http://en.cppreference.com/w/cpp/numeric/math/floor和http://en.cppreference.com/w/cpp/numeric/math/floo

c++ - 将 double 值舍入为(稍微)较低精度的好方法是什么?

我的问题是我必须使用第三方函数/算法,它采用double数组作为输入,但显然对输入数据中的非常小的变化很敏感.但是对于我的应用程序,我必须为(几乎)相同的输入获得相同的结果!特别是我有两个测试输入数组,它们直到小数点后的第5个位置都是相同的,但我仍然得到不同的结果。所以导致“问题”的原因一定是在小数点后第5位之后。现在我的想法是将输入四舍五入到略低的精度,以便从非常相似但不是100%相同的输入中获得相同的结果。因此,我正在寻找一种好的/有效的方法来将双精度值四舍五入到稍微较低的精度。到目前为止,我使用这段代码舍入到小数点后的第9位:doublex=original_input();x=

与 sprintf 相关的 C++ 舍入行为一致性

我有一个在Windows/Linux上运行的C++程序。在Windows上,程序是用VisualStudio2012编译的,在Linux上是用GCC编译的。使用sprintf将double转换为字符串时,VisualStudio使用与GCC编译器不同的舍​​入方法来处理并列-即以5结尾的小数。VisualStudio编译器似乎执行roundhalfawayfromzero而GCC做roundeven又名银行家四舍五入。四舍五入是理想的行为。是否可以更改visualstudio/windows中用于sprintf格式字符串的舍入行为?因为我需要使两者之间的舍入行为一致。这是一个小的C++

c++ - 将 y=x*x 舍入到最近的

除法结果四舍五入为prettysimple.但我试图对除法结果进行舍入,以便后续操作给出最佳近似值。最好用一个简单的函数来解释:constinthalfbits=std::numeric_limits::digits/2;unsignedx=foo();//Likelybig.unsignedx_div=x>>halfbits;//Roundeddownunsignedy=x_div*x_div;//Willfitduetodivision.我可以圆x_div通过添加1到最近的.但由于x²不是线性函数,因此y通常没有正确舍入。有没有更简单更准确的方法来计算(x*x)>>(halfbit

c++ - 如何进行带有偏差的浮点舍入(总是向上或向下舍入)?

我想用一个偏差来舍入float,要么总是向下要么总是向上。代码中有一个特定点我需要这个,程序的其余部分应该像往常一样四舍五入到最接近的值。例如,我想四舍五入到最接近的1/10的倍数。最接近7/10的float约为0.69999998807,但最接近8/10的float约为0.80000001192。当我四舍五入数字时,这是我得到的两个结果。我宁愿让他们以同样的方式四舍五入。7/10应四舍五入为0.70000004768,8/10应四舍五入为0.80000001192。在这个例子中,我总是四舍五入,但我有一些地方我想总是向下舍入。幸运的是,我只处理这些地方的积极值(value)观。我用来

具有明确舍入策略的整数除法 C++ 函数

我想要C++中的某些东西,让我可以使用指定的舍入行为进行高效的整数除法,如下所示:div_down(-4,3)==>-2div_up(4,3)==>2div_to_zero(-4,3)==>-1div_to_nearest(5,3)==>2我希望它能在编译时检测目标机器的行为并生成适当的最佳实现。类似模数的东西也很好,在编译时抽象出负操作数的未定义行为。这个存在吗?如果不是,有什么好的制作方法?我可以想到一些可能的方法:尝试将它们实现为静态优化的单个表达式使用常量表达式来检测目标行为并从多个实现中进行选择,可能使用模板(但究竟如何?) 最佳答案

c++ - 将 float 舍入为 n 位有效数字的 C 例程?

假设我有一个float。我想将它四舍五入到一定数量的有效数字。在我的例子中n=6。所以说float是f=1.23456999;round(f,6)会得到1.23457f=123456.0001会得到123456有人知道这样的套路吗?它在网站上有效:http://ostermiller.org/calc/significant_figures.html 最佳答案 将数字乘以合适的比例因子,将所有有效数字移至小数点左侧。然后四舍五入最后反转操作:#includedoubleround_to_digits(doublevalue,intd

c++ - 用 ostringstream 舍入 float

我有一个关于使用ostringstream从float到C++字符串的转换的问题。这是我的台词:voiddoSomething(floatt){ostringstreamstream;stream当t的值为-0.89999时,它会四舍五入为-0.9,但当它的值为0.0999或小于1.754e-7时,它只会打印而不会四舍五入。有什么解决方案。 最佳答案 您需要使用precision设置ostringstream的精度例如stream.precision(3);stream 关于c++-用o

c++ - gcc 的 __float128 float 是否考虑了当前的舍入模式?

gcc的__float128float的算术运算是否考虑了当前的舍入模式?例如,如果使用C++11函数std::fesetenv,我将舍入模式更改为FE_DOWNWARD,将对进行算术运算的结果__float128向下舍入?这是否由__float128规范保证? 最佳答案 我相信保证__float128上的操作考虑了舍入模式。根据GNUC库文档,浮点计算遵循舍入模式。根据GCC手册__float128是一个支持除法等算术运算的浮点类型。据此我推断,对于__float128的操作,必须考虑舍入模式。GNUC库文档指出:20.6Roun